home *** CD-ROM | disk | FTP | other *** search
/ Delphi 5 for Professionals / DELPHI5.iso / AddOns / Components / Orpheus v3.02 / SETUP.EXE / %MAINDIR% / OvcColor.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1999-02-25  |  4.5 KB  |  188 lines

  1. {*********************************************************}
  2. {*                  OVCCOLOR.PAS 3.00                    *}
  3. {*     Copyright (c) 1995-99 TurboPower Software Co      *}
  4. {*                 All rights reserved.                  *}
  5. {*********************************************************}
  6.  
  7. {$I OVC.INC}
  8.  
  9. {$B-} {Complete Boolean Evaluation}
  10. {$I+} {Input/Output-Checking}
  11. {$P+} {Open Parameters}
  12. {$T-} {Typed @ Operator}
  13. {$W-} {Windows Stack Frame}
  14. {$X+} {Extended Syntax}
  15.  
  16. {$IFNDEF Win32}
  17. {$G+} {286 Instructions}
  18. {$N+} {Numeric Coprocessor}
  19.  
  20. {$C MOVEABLE,DEMANDLOAD,DISCARDABLE}
  21. {$ENDIF}
  22.  
  23. unit OvcColor;
  24.   {-Color selection class}
  25.  
  26. interface
  27.  
  28. uses
  29.   {$IFDEF Win32} Windows, {$ELSE} WinTypes, WinProcs, {$ENDIF}
  30.   Classes, Graphics,
  31.   OvcMisc, OvcExcpt;
  32.  
  33. type
  34.   TOvcColors = class(TPersistent)
  35.   {.Z+}
  36.   protected {private}
  37.     {property variables}
  38.     FBackColor     : TColor;   {background color}
  39.     FTextColor     : TColor;   {text or font color}
  40.     FUseDefault    : Boolean;  {true to use defaults}
  41.  
  42.     {event variables}
  43.     FOnColorChange : TNotifyEvent;
  44.  
  45.     {internal variables}
  46.     cDefBackColor  : TColor;   {default background}
  47.     cDefTextColor  : TColor;   {default text color}
  48.  
  49.     {property methods}
  50.     procedure SetBackColor(Value: TColor);
  51.       {-set the color used for the background}
  52.     procedure SetTextColor(Value: TColor);
  53.       {-set the color used for the foreground}
  54.     procedure SetUseDefault(Value: Boolean);
  55.       {-set the flag to reset colors to parent default values}
  56.  
  57.     procedure ReadUseDefault(Reader : TReader);
  58.       {-read the UseDefault property. for backward compatibility only}
  59.  
  60.   protected
  61.     procedure DefineProperties(Filer : TFiler);
  62.       override;
  63.  
  64.     procedure DoOnColorChange;
  65.       {-notify onwing object that a color has changed}
  66.       dynamic;
  67.  
  68.     procedure ResetToDefaultColors;
  69.       {-assign default color values}
  70.       dynamic;
  71.  
  72.   public
  73.     procedure Assign(Source : TPersistent);
  74.       override;
  75.     constructor Create(FG, BG : TColor);
  76.       virtual;
  77.   {.Z-}
  78.  
  79.     property OnColorChange : TNotifyEvent
  80.       read FOnColorChange
  81.       write FOnColorChange;
  82.  
  83.   published
  84.     property BackColor : TColor
  85.       read FBackColor
  86.       write SetBackColor;
  87.  
  88.     property TextColor : TColor
  89.       read FTextColor
  90.       write SetTextColor;
  91.  
  92.     property UseDefault : Boolean
  93.       read FUseDefault
  94.       write SetUseDefault
  95.       stored False;
  96.   end;
  97.  
  98.  
  99. implementation
  100.  
  101.  
  102. {*** TOvcColors ***}
  103.  
  104. procedure TOvcColors.Assign(Source : TPersistent);
  105. var
  106.   C : TOvcColors absolute Source;
  107. begin
  108.   if (Source <> nil) and (Source is TOvcColors) then begin
  109.     BackColor  := C.BackColor;
  110.     TextColor  := C.TextColor;
  111.   end else
  112.     inherited Assign(Source);
  113. end;
  114.  
  115. constructor TOvcColors.Create(FG, BG : TColor);
  116. begin
  117.   inherited Create;
  118.  
  119.   cDefBackColor := BG;
  120.   cDefTextColor := FG;
  121.   FUseDefault   := True;
  122.  
  123.   {initialize to these colors}
  124.   ResetToDefaultColors;
  125. end;
  126.  
  127. procedure TOvcColors.DefineProperties(Filer : TFiler);
  128. begin
  129.   inherited DefineProperties(Filer);
  130.   {define a UseDefault property for compatibility with eariler versions}
  131.   Filer.DefineProperty('UseDefault', ReadUseDefault, nil, False);
  132. end;
  133.  
  134. procedure TOvcColors.DoOnColorChange;
  135.   {-notify onwing object that a color has changed}
  136. begin
  137.   if Assigned(FOnColorChange) then
  138.     FOnColorChange(Self);
  139. end;
  140.  
  141. procedure TOvcColors.ReadUseDefault(Reader : TReader);
  142. begin
  143.   {read property and discard it}
  144.   Reader.ReadBoolean;
  145. end;
  146.  
  147. procedure TOvcColors.ResetToDefaultColors;
  148.   {-obtain default color values}
  149. begin
  150.   FBackColor := cDefBackColor;
  151.   FTextColor := cDefTextColor;
  152. end;
  153.  
  154. procedure TOvcColors.SetBackColor(Value: TColor);
  155.   {-set the color used for the background}
  156. begin
  157.   if Value <> FBackColor then begin
  158.     if Value <> cDefBackColor then
  159.       FUseDefault := False;
  160.     FBackColor := Value;
  161.     DoOnColorChange;
  162.   end;
  163. end;
  164.  
  165. procedure TOvcColors.SetTextColor(Value: TColor);
  166.   {-set the color used for the foreground}
  167. begin
  168.   if Value <> FTextColor then begin
  169.     if Value <> cDefTextColor then
  170.       FUseDefault := False;
  171.     FTextColor := Value;
  172.     DoOnColorChange;
  173.   end;
  174. end;
  175.  
  176. procedure TOvcColors.SetUseDefault(Value: Boolean);
  177.   {-set the flag to reset colors to parent default values}
  178. begin
  179.   FUseDefault := Value;
  180.   if FUseDefault then begin
  181.     ResetToDefaultColors;  {assign default values}
  182.     DoOnColorChange;
  183.   end;
  184. end;
  185.  
  186.  
  187. end.
  188.